home *** CD-ROM | disk | FTP | other *** search
- package sun.io;
-
- import java.io.UnsupportedEncodingException;
- import java.lang.ref.SoftReference;
- import java.security.AccessController;
- import java.util.Properties;
- import sun.misc.VM;
- import sun.security.action.GetPropertyAction;
-
- /** @deprecated */
- @Deprecated
- public class Converters {
- private static Object lock = Converters.class;
- private static String converterPackageName = null;
- private static String defaultEncoding = null;
- public static final int BYTE_TO_CHAR = 0;
- public static final int CHAR_TO_BYTE = 1;
- private static final String[] converterPrefix = new String[]{"ByteToChar", "CharToByte"};
- private static final int CACHE_SIZE = 3;
- private static final Object DEFAULT_NAME = new Object();
- private static SoftReference[][] classCache = new SoftReference[][]{new SoftReference[3], new SoftReference[3]};
-
- private Converters() {
- }
-
- private static void moveToFront(Object[] var0, int var1) {
- Object var2 = var0[var1];
-
- for(int var3 = var1; var3 > 0; --var3) {
- var0[var3] = var0[var3 - 1];
- }
-
- var0[0] = var2;
- }
-
- private static Class cache(int var0, Object var1) {
- SoftReference[] var2 = classCache[var0];
-
- for(int var3 = 0; var3 < 3; ++var3) {
- SoftReference var4 = var2[var3];
- if (var4 != null) {
- Object[] var5 = var4.get();
- if (var5 == null) {
- var2[var3] = null;
- } else if (var5[1].equals(var1)) {
- moveToFront(var2, var3);
- return (Class)var5[0];
- }
- }
- }
-
- return null;
- }
-
- private static Class cache(int var0, Object var1, Class var2) {
- SoftReference[] var3 = classCache[var0];
- var3[2] = new SoftReference(new Object[]{var2, var1});
- moveToFront(var3, 2);
- return var2;
- }
-
- public static boolean isCached(int var0, String var1) {
- synchronized(lock) {
- SoftReference[] var3 = classCache[var0];
-
- for(int var4 = 0; var4 < 3; ++var4) {
- SoftReference var5 = var3[var4];
- if (var5 != null) {
- Object[] var6 = var5.get();
- if (var6 == null) {
- var3[var4] = null;
- } else if (var6[1].equals(var1)) {
- return true;
- }
- }
- }
-
- return false;
- }
- }
-
- private static String getConverterPackageName() {
- String var0 = converterPackageName;
- if (var0 != null) {
- return var0;
- } else {
- GetPropertyAction var1 = new GetPropertyAction("file.encoding.pkg");
- var0 = (String)AccessController.doPrivileged(var1);
- if (var0 != null) {
- converterPackageName = var0;
- } else {
- var0 = "sun.io";
- }
-
- return var0;
- }
- }
-
- public static String getDefaultEncodingName() {
- synchronized(lock) {
- if (defaultEncoding == null) {
- GetPropertyAction var1 = new GetPropertyAction("file.encoding");
- defaultEncoding = (String)AccessController.doPrivileged(var1);
- }
- }
-
- return defaultEncoding;
- }
-
- public static void resetDefaultEncodingName() {
- if (!VM.isBooted()) {
- synchronized(lock) {
- defaultEncoding = "ISO-8859-1";
- Properties var1 = System.getProperties();
- var1.setProperty("file.encoding", defaultEncoding);
- System.setProperties(var1);
- }
- }
- }
-
- private static Class getConverterClass(int var0, String var1) throws UnsupportedEncodingException {
- String var2 = null;
- if (!var1.equals("ISO8859_1")) {
- if (var1.equals("8859_1")) {
- var2 = "ISO8859_1";
- } else if (var1.equals("ISO8859-1")) {
- var2 = "ISO8859_1";
- } else if (var1.equals("646")) {
- var2 = "ASCII";
- } else {
- var2 = CharacterEncoding.aliasName(var1);
- }
- }
-
- if (var2 == null) {
- var2 = var1;
- }
-
- try {
- return Class.forName(getConverterPackageName() + "." + converterPrefix[var0] + var2);
- } catch (ClassNotFoundException var4) {
- throw new UnsupportedEncodingException(var2);
- }
- }
-
- private static Object newConverter(String var0, Class var1) throws UnsupportedEncodingException {
- try {
- return var1.newInstance();
- } catch (InstantiationException var3) {
- throw new UnsupportedEncodingException(var0);
- } catch (IllegalAccessException var4) {
- throw new UnsupportedEncodingException(var0);
- }
- }
-
- static Object newConverter(int var0, String var1) throws UnsupportedEncodingException {
- Class var2;
- synchronized(lock) {
- var2 = cache(var0, var1);
- if (var2 == null) {
- var2 = getConverterClass(var0, var1);
- if (!var2.getName().equals("sun.io.CharToByteUTF8")) {
- cache(var0, var1, var2);
- }
- }
- }
-
- return newConverter(var1, var2);
- }
-
- private static Class getDefaultConverterClass(int var0) {
- boolean var1 = false;
- Class var2 = cache(var0, DEFAULT_NAME);
- if (var2 != null) {
- return var2;
- } else {
- String var3 = getDefaultEncodingName();
- if (var3 != null) {
- var1 = true;
- } else {
- var3 = "ISO8859_1";
- }
-
- try {
- var2 = getConverterClass(var0, var3);
- if (var1) {
- cache(var0, DEFAULT_NAME, var2);
- }
- } catch (UnsupportedEncodingException var7) {
- try {
- var2 = getConverterClass(var0, "ISO8859_1");
- } catch (UnsupportedEncodingException var6) {
- throw new InternalError("Cannot find default " + converterPrefix[var0] + " converter class");
- }
- }
-
- return var2;
- }
- }
-
- static Object newDefaultConverter(int var0) {
- Class var1;
- synchronized(lock) {
- var1 = getDefaultConverterClass(var0);
- }
-
- try {
- return newConverter("", var1);
- } catch (UnsupportedEncodingException var4) {
- throw new InternalError("Cannot instantiate default converter class " + var1.getName());
- }
- }
- }
-